package org.jeecg.modules.flowable.service;


import org.jeecg.modules.flowable.common.util.tree.TreeDesc;
import org.jeecg.modules.flowable.service.bo.taskconf.TaskConf;
import org.jeecg.modules.flowable.service.bo.TaskConfList;
import org.jeecg.modules.flowable.service.bo.taskconf.TaskConfResult;

import java.io.InputStream;
import java.util.List;
import java.util.Map;

public interface FlowableService {
    /**
     * 跟据流程实例获得流程图
     * @param argProcessInstanceId
     * @return
     */
    public InputStream getFlowDesignerByProcessInstanceId(String argProcessInstanceId);

    /**
     * 跟据流程KEY获取流程图
     * @param argFlowKey
     * @return
     */
    public InputStream getFlowDesignerByFlowKey(String argFlowKey);

    /**
     * 判断流程是否结束
     * @param argProcessInstanceId
     * @return
     */
    public Boolean isFlowFinish(String argProcessInstanceId);

    /**
     * 跟据流程定义ID查询流程任务节点配置列表
     * @param argProcessDefinitionId
     * @return
     */
    public List<TaskConfList> getTaskConfList(String argProcessDefinitionId);

    /**
     * 查询机构树
     * @return
     */
    public TreeDesc queryOrgTreeDesc();

    /**
     * 查询区划树
     * @return
     */
    public TreeDesc queryRegionTreeDesc();

    /**
     * 查询用户列表
     * @return
     */
    public List<Map<String, Object>> queryUserList(String argUserName);

    /**
     * 查询角色列表
     * @return
     */
    public List<Map<String, Object>> queryRoleList(String argRoleName);

    /**
     * 保存任务配置信息
     * @param argTaskConf
     * @return
     */
    public TaskConf saveTaskConf(TaskConf argTaskConf);

    /**
     * 查询任务配置信息
     * @param taskDefKey
     * @return
     */
    public TaskConfResult queryTaskConf(String taskDefKey);

//    /**
//     * 更新运行时流程处理人用于记录流程运行时任务的待办角色或处理人的信息。
//     * @param argActionBody
//     */
//    public void updateActRuEmpl(ActionBody argActionBody);

}
